from django.core.files.storage import Storage
from django.conf import settings
class MyStorage(Storage):
    """自定义文件存储类"""
    def __init__(self,qiniu_base_url=None):
        # 如果qiniu_base_url不为None则整个表达式结果值就是qiniu_base_url
        # 如果qiniu_base_url为None，则settings.QN_BASE_URL的值为整个表达式的值
        self.qiniu_base_url=qiniu_base_url or settings.QN_BASE_URL

    def _open(self,name, mode='rb'):
        """
        打开文件时被调用，文档告诉我必须重写
        :param name:文件路径
        :param mode:文件的打开方式
        :return:None
        """
        # 因为当前不是要打开某个文件，但是这个方法必须重写，所以pass掉即可
        pass
    def _save(self,name, content):
        """
        将来后台管理系统中，需要这个方法实现文件上传到七牛云平台
        保存文件时被调用：文档告诉我必须重写
        :param name:文件路径
        :param content:文件二进制内容
        :return:
        """
        # 因为当前不是去保存文件，但是又必须重写，所以pass掉即可
        pass
    def url(self,name):
        """
        返回文件的全路径
        :param name:文件的相对路径
        :return:文件的全路径："http://rx84iqxl2.hb-bkt.clouddn.com/"+上传到七牛的文件名
        """
        print("==url(self,name=%s)=="%name)
        # return "http://rx84iqxl2.hb-bkt.clouddn.com/"+name
        # return settings.QN_BASE_URL+name
        return self.qiniu_base_url+name
